<?php
/**
 * Controller_Parse
 *
 * Класс Controller_Parse отвечает за обработку страниц связанных с парсингом
 *
 * @author Александр Егоров <slamer86@gmail.com>
 * @version 1.0
 */
class Controller_Parse extends Controller_Base {
	
	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		if (! SimpleAdministration::isAdmin()) throw new Exception_SiteError('', 403);
		set_time_limit(0);
	  	Service_Debug::setDebug();
		switch ($this->arrRequest[1]) {
			case 'companies':
				$this->actionParseCompanies();
				break;
			case 'cities_and_distances':
				$this->actionParseCitiesAndDistances();
				break;
			case 'wiki-parse':
				$this->WikiParse();
				break;
			case 'references_to_companies':
				$this->actionSetReferencesToCompanies();
				break;
			case 'managers':
				$this->actionParseManagers();
				break;
			case 'references_to_managers':
				$this->actionSetReferencesToManagers();
				break;
			default: throw new Exception_SiteError('', 404);
		}
	}
	
	/**
	 * Добавляет новые данные о текущих городах БД и маршрутах между ними
	 */
	public function actionParseCitiesAndDistances() {
		Service_Debug::setDebug();
		Pressure::setStart();
		
		$objAvtodispetcher = new Service_Avtodispetcher();

		$objAvtodispetcher->prepareAndParsing();
		
		echo Pressure::calculateCurrentDuration();
		echo '<br />Готово';
	}
	
	public function WikiParse() {
		Service_Debug::setDebug();
		Pressure::setStart();
	
		$objWikiParse = new Service_WikiParse();
		$objWikiParse->regionParse();
	
		echo Pressure::calculateCurrentDuration();
		echo '<br />Готово';
	}
	
	/**
	 * Добавляет новые компании в список компаний
	 */
	public function actionParseCompanies() {
		Service_Debug::setDebug();
		Pressure::setStart();
		$objFinist = new Finist();
		echo $objFinist->parseCompanies();

		echo '<p>' . Pressure::calculateCurrentDuration() . '</p>';		
	}
	
	/**
	 * Устанавливает ссылки на компании для заказов
	 */
	public function actionSetReferencesToCompanies() {
		Service_Debug::setDebug();
		Pressure::setStart();
		$objFinist = new Finist();
		echo $objFinist->setReferencesToCompanies();

		echo '<p>' . Pressure::calculateCurrentDuration() . '</p>';		
	}
	
	/**
	 * Добавляет новых менеджеров в список менеджеров
	 */
	public function actionParseManagers() {
		Service_Debug::setDebug();
		Pressure::setStart();
		$objFinist = new Finist();
		echo $objFinist->parseManagers();

		echo '<p>' . Pressure::calculateCurrentDuration() . '</p>';		
	}
	
	/**
	 * Устанавливает ссылки на менеджеров для заказов
	 */
	public function actionSetReferencesToManagers() {
		Service_Debug::setDebug();
		Pressure::setStart();
		$objFinist = new Finist();
		echo $objFinist->setReferencesToManagers();

		echo '<p>' . Pressure::calculateCurrentDuration() . '</p>';		
	}
		
}
